}
void
-gtk_css_image_builtin_draw_grip (GtkCssImage *image,
- cairo_t *cr,
- double width,
- double height,
- GtkJunctionSides sides,
- const GdkRGBA *bg_color)
+gtk_css_image_builtin_draw_grip (GtkCssImage *image,
+ cairo_t *cr,
+ double width,
+ double height,
+ GtkCssImageBuiltinType image_type,
+ const GdkRGBA *bg_color)
{
GdkRGBA lighter, darker;
color_shade (bg_color, 0.7, &darker);
color_shade (bg_color, 1.3, &lighter);
- /* reduce confusing values to a meaningful state */
- if ((sides & (GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_BOTTOMRIGHT)) == (GTK_JUNCTION_CORNER_TOPLEFT | GTK_JUNCTION_CORNER_BOTTOMRIGHT))
- sides &= ~GTK_JUNCTION_CORNER_TOPLEFT;
-
- if ((sides & (GTK_JUNCTION_CORNER_TOPRIGHT | GTK_JUNCTION_CORNER_BOTTOMLEFT)) == (GTK_JUNCTION_CORNER_TOPRIGHT | GTK_JUNCTION_CORNER_BOTTOMLEFT))
- sides &= ~GTK_JUNCTION_CORNER_TOPRIGHT;
-
- if (sides == 0)
- sides = GTK_JUNCTION_CORNER_BOTTOMRIGHT;
-
/* align drawing area to the connected side */
- if (sides == GTK_JUNCTION_LEFT)
+ if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT)
{
if (height < width)
width = height;
}
- else if (sides == GTK_JUNCTION_CORNER_TOPLEFT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT)
{
if (width < height)
height = width;
else if (height < width)
width = height;
}
- else if (sides == GTK_JUNCTION_CORNER_BOTTOMLEFT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT)
{
/* make it square, aligning to bottom left */
if (width < height)
else if (height < width)
width = height;
}
- else if (sides == GTK_JUNCTION_RIGHT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT)
{
/* aligning to right */
if (height < width)
width = height;
}
}
- else if (sides == GTK_JUNCTION_CORNER_TOPRIGHT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT)
{
if (width < height)
height = width;
width = height;
}
}
- else if (sides == GTK_JUNCTION_CORNER_BOTTOMRIGHT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT)
{
/* make it square, aligning to bottom right */
if (width < height)
width = height;
}
}
- else if (sides == GTK_JUNCTION_TOP)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOP)
{
if (width < height)
height = width;
}
- else if (sides == GTK_JUNCTION_BOTTOM)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM)
{
/* align to bottom */
if (width < height)
else
g_assert_not_reached ();
- if (sides == GTK_JUNCTION_LEFT ||
- sides == GTK_JUNCTION_RIGHT)
+ if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT ||
+ image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT)
{
gint xi;
xi += 2;
}
}
- else if (sides == GTK_JUNCTION_TOP ||
- sides == GTK_JUNCTION_BOTTOM)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOP ||
+ image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM)
{
gint yi;
yi += 2;
}
}
- else if (sides == GTK_JUNCTION_CORNER_TOPLEFT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT)
{
gint xi, yi;
yi -= 3;
}
}
- else if (sides == GTK_JUNCTION_CORNER_TOPRIGHT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT)
{
gint xi, yi;
yi -= 3;
}
}
- else if (sides == GTK_JUNCTION_CORNER_BOTTOMLEFT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT)
{
gint xi, yi;
yi += 3;
}
}
- else if (sides == GTK_JUNCTION_CORNER_BOTTOMRIGHT)
+ else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT)
{
gint xi, yi;
double width,
double height,
GtkCssImageBuiltinType image_type,
- GtkJunctionSides sides,
const GdkRGBA * fg_color,
const GdkRGBA * bg_color,
const GdkRGBA * border_color,
FALSE, TRUE, TRUE,
fg_color, border_color);
break;
- case GTK_CSS_IMAGE_BUILTIN_GRIP:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_TOP:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT:
+ case GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT:
gtk_css_image_builtin_draw_grip (image, cr,
width, height,
- sides,
+ image_type,
bg_color);
break;
case GTK_CSS_IMAGE_BUILTIN_PANE_SEPARATOR:
GTK_CSS_IMAGE_BUILTIN_EXPANDER_VERTICAL_LEFT_EXPANDED,
GTK_CSS_IMAGE_BUILTIN_EXPANDER_HORIZONTAL_RIGHT_EXPANDED,
GTK_CSS_IMAGE_BUILTIN_EXPANDER_VERTICAL_RIGHT_EXPANDED,
- GTK_CSS_IMAGE_BUILTIN_GRIP,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_TOP,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT,
+ GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT,
GTK_CSS_IMAGE_BUILTIN_PANE_SEPARATOR,
GTK_CSS_IMAGE_BUILTIN_HANDLE,
GTK_CSS_IMAGE_BUILTIN_SPINNER
double width,
double height,
GtkCssImageBuiltinType image_type,
- GtkJunctionSides sides,
const GdkRGBA *fg_color,
const GdkRGBA *bg_color,
const GdkRGBA *border_color,
cr,
width, height,
image_type,
- gtk_style_context_get_junction_sides (context),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR)),
cr,
width, height,
image_type,
- gtk_style_context_get_junction_sides (context),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR)),
cr,
size, size,
GTK_CSS_IMAGE_BUILTIN_ARROW,
- gtk_style_context_get_junction_sides (context),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR)),
cr,
width, height,
image_type,
- gtk_style_context_get_junction_sides (context),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR)),
cairo_translate (cr, x, y);
if (gtk_style_context_has_class (context, GTK_STYLE_CLASS_GRIP))
- type = GTK_CSS_IMAGE_BUILTIN_GRIP;
+ {
+ GtkJunctionSides sides = gtk_style_context_get_junction_sides (context);
+
+ /* order is important here for when too many (or too few) sides are set */
+ if ((sides & GTK_JUNCTION_CORNER_BOTTOMRIGHT) == GTK_JUNCTION_CORNER_BOTTOMRIGHT)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT;
+ else if ((sides & GTK_JUNCTION_CORNER_TOPRIGHT) == GTK_JUNCTION_CORNER_TOPRIGHT)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT;
+ else if ((sides & GTK_JUNCTION_CORNER_BOTTOMLEFT) == GTK_JUNCTION_CORNER_BOTTOMLEFT)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT;
+ else if ((sides & GTK_JUNCTION_CORNER_TOPLEFT) == GTK_JUNCTION_CORNER_TOPLEFT)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT;
+ else if (sides & GTK_JUNCTION_RIGHT)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT;
+ else if (sides & GTK_JUNCTION_BOTTOM)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM;
+ else if (sides & GTK_JUNCTION_TOP)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_TOP;
+ else if (sides & GTK_JUNCTION_LEFT)
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT;
+ else
+ type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT;
+ }
else if (gtk_style_context_has_class (context, GTK_STYLE_CLASS_PANE_SEPARATOR))
- type = GTK_CSS_IMAGE_BUILTIN_PANE_SEPARATOR;
+ {
+ type = GTK_CSS_IMAGE_BUILTIN_PANE_SEPARATOR;
+ }
else
- type = GTK_CSS_IMAGE_BUILTIN_HANDLE;
+ {
+ type = GTK_CSS_IMAGE_BUILTIN_HANDLE;
+ }
gtk_css_image_builtin_draw (_gtk_css_image_value_get_image (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_ICON_SOURCE)),
cr,
width, height,
type,
- gtk_style_context_get_junction_sides (context),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR)),
cr,
width, height,
GTK_CSS_IMAGE_BUILTIN_SPINNER,
- gtk_style_context_get_junction_sides (context),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)),
_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR)),